/**
 * Copyright 2005-2012 Brin.com
 * All rights reserved.
 * 
 * @project
 * @author Brin
 * @version 1.0
 * @data 2013-03-10
 */
package com.brin.core.util;

import org.apache.commons.lang.StringUtils;

public class StringUtil extends StringUtils {

	/**
	 * 通过字符串驻留池来进行比较
	 * @param str1
	 * @param str2
	 * @return
	 */
	public static boolean intern(String str1, String str2) {
		if (str1 == null) return str2 == null;
		
		str1 = str1.intern();
		
		return (str1 == str2)?true : false;
	}
	
	/**
	 * 将String aaBc 转为 aa_bc的格式
	 * 用于java bean 属性转为数据库字段名
	 * @param str
	 * @return
	 */
	public static String propertyToFieldName(String str) {
		if (isEmpty(str)) return str;
		
		if(str.charAt(0) > 'A' && str.charAt(0) < 'Z') return str;
		
		if(Character.isUpperCase(str.charAt(0))) 
			str = Character.toString(Character.toLowerCase(str.charAt(0)))+str.substring(1);
		
		for(int i= 1; i < str.length(); i++) {
			char a = str.charAt(i);
			if(a >= 'A' && a <= 'Z') {
				if(str.charAt(i-1) != '_') {
					str = str.replace(String.valueOf(a), ("_".concat(String.valueOf(a))).toLowerCase());
					i++;
				}
				
				continue ;
			}
		}
		
		return str;
	}
	
	/**
	 * 返回截取字符串
	 * @param str
	 * @param num
	 * @return
	 */
	public static String omit(String str, int num) {
		
		if (StringUtil.isBlank(str)) return null;
		if(str.length() < num) return str;
		
		return num > 0?str.substring(0, num).concat(" ..."):str;
	}
}
